package leetcode_数组.leetcode_数组的遍历;

// 提莫攻击
public class _495 {
    public static void main(String[] args) {
        System.out.println(findPoisonedDuration(new int[]{1, 2}, 2));
        // {1, 2} 2    1s 为 2s 的毒抵消了 1s，计算抵消的时间
    }

    public static int findPoisonedDuration(int[] timeSeries, int duration) {
        if (timeSeries.length == 0 || duration == 0) {
            return 0;
        }
        // 可以理解为上次为这次抵消了多少时间
        int ans = duration;
        int end = timeSeries[0] + duration - 1;// 这一次中毒的结束时间
        for (int i = 1; i < timeSeries.length; i++) {
            // 如果这次中毒时间和上次中毒结束时间重合，计算抵消的时间
            if (timeSeries[i] <= end) { // 表示中毒开始时间在上次中毒时间的结束范围内
                // (timeSeries[i] + duration - 1) 这次中毒开始时间的结束时间
                ans += Math.max(timeSeries[i] + duration - 1 - end, 0);
            } else { // 表示上次中毒时间结束后才开始中毒，直接加即可
                ans += duration;
            }
            end = Math.max(end, timeSeries[i] + duration - 1);
        }
        return ans;
    }

}
